#ifndef MEMBERCLASS_H
#define MEMBERCLASS_H

#include <QVector>
#include <QString>

// 成员类，存放成员的各个属性
class MemberClass
{
public:
    MemberClass();
    void setMemberName(QString name);
    QString getMemberName(void) const;
    void setMemberAbilityLevelIndex(int level);
    int getMemberAbilityLevelIndex(void);
    void setMemberRequirementIndex(int index);
    int getMemberRequirementIndex(void);

    const QString &getTeacherName() const;
    void setTeacherName(const QString &newTeacherName);


    MemberClass & operator = (const MemberClass & newObj);

    const QVector<int> &getNightVec() const;
    void setNightVec(const QVector<int> &newNightVec);

    const QVector<int> &getDayVec() const;
    void setDayVec(const QVector<int> &newDayVec);

    void vectorAppend(int type, const int value);

    int getDayCount() const;
    void setDayCount(int newDayCount);
    int getNightCount() const;
    void setNightCount(int newNightCount);
    void workCountPlus(int type, int num);

    int getWorkCount() const;
    void setWorkCount(int newWorkCount);

    int getLackDayCount(int count);

private:
    QString sName;                              // 姓名
    QString teacherName;               // 带教老师姓名，没有的话为""

    // combobox的下拉索引值
    int iAbilityLevelIndex;                  // 能力级别     MEMBER_ABILITY_LEVEL_*
    int iRequirementIndex;              // 特殊选项Index

    int dayCount;                              // 白班数量
    int nightCount;                            // 夜班数量
    int workCount;                          // 班次总数
    int lackDayCount;                    // 欠缺的白班数量 = 本月法定工作日 - 班次总数
    int specicalNightWorkCount; // 统一监控夜班数量

    QVector<int> dayVec;                              // 记录本成员本月上的白班，存放的是每月的第几天，从0开始
    QVector<int> nightVec;                              // 记录本成员本月上的夜班，存放的是每月的第几天，从0开始
};

extern QList<MemberClass*> MEMBERLIST;

#endif // MEMBERCLASS_H
